package modelos.daos;

import controladores.ManejadorBaseDatos;
import modelos.pojos.Rol;
import java.sql.*;

public class RolDAO {

    private static Connection con;

    public static void crear(Rol rol) throws SQLException, Exception {

        ManejadorBaseDatos mbd = ManejadorBaseDatos.getInstancia();
        mbd.conectar();
        con = mbd.getConexion();

        if (con == null) {
            throw new SQLException(" no hay conexion ");
        }

        PreparedStatement pst = null;

        try {
            pst = con.prepareStatement("Insert Into Rol values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)");
            pst.setString(1, null);
            pst.setString(2, rol.getNombre());
            pst.setBoolean(3, rol.isAbonar());
            pst.setBoolean(4, rol.isCancelarReserva());
            pst.setBoolean(5, rol.isConfigurarInformes());
            pst.setBoolean(6, rol.isConfirmarCheckIn());
            pst.setBoolean(7, rol.isConsultarHabitacionesDisponibles());
            pst.setBoolean(8, rol.isConsultarInforme());
            pst.setBoolean(9, rol.isConsultarReserva());
            pst.setBoolean(10, rol.isConsultarServiciosAdicionales());
            pst.setBoolean(11, rol.isDesactivarCliente());
            pst.setBoolean(12, rol.isFacturar());
            pst.setBoolean(13, rol.isGenerarInforme());
            pst.setBoolean(14, rol.isGestionarCliente());
            pst.setBoolean(15, rol.isGestionarHabitaciones());
            pst.setBoolean(16, rol.isGestionarRoles());
            pst.setBoolean(17, rol.isGestionarSaladeEventos());
            pst.setBoolean(18, rol.isGestionarServiciosAdicionales());
            pst.setBoolean(19, rol.isGestionarUsuarios());
            pst.setBoolean(20, rol.isModificarReserva());
            pst.setBoolean(21, rol.isRegistrarServicios());
            pst.setBoolean(22, rol.isSolicitarReserva());
            pst.setString(23, rol.getEstado() + "");
            pst.executeUpdate();


        } finally {

            if (pst != null) {
                pst.close();
            }
        }
    }

    public static Rol consultar(String nombre) throws SQLException {

        ResultSet rs = null;
        PreparedStatement pst = null;
        Rol rol = null;

        try {
            ManejadorBaseDatos mbd = ManejadorBaseDatos.getInstancia();
            mbd.conectar();
            con = mbd.getConexion();
            pst = con.prepareStatement("select * from Rol where nombre = ?");
            pst.setString(1, nombre);

            rs = pst.executeQuery();

            while (rs.next()) {
                rol = Rol.cargarDatos(rs);

            }
        } finally {
            if (rs != null) {
                rs.close();
            }
            if (pst != null) {
                pst.close();
            }
            return rol;
        }
    }
}
